// 该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
import Vuex from 'vuex'
// 应用Vuex插件
Vue.use(Vuex)

// 准备actions对象——用于响应组件中用户的动作
const actions = {
  // increment({commit}, value) {
  //   console.log('actions中的increment被调用了')
  //   commit('INCREMENT', value)
  // },
  // decrement({commit}, value) {
  //   commit('DECREMENT', value)
  // },
  incrementOdd(context, value) {
    if(context.state.sum % 2) {
      context.commit('INCREMENT', value)
    }
  },
  incrementWait(context, value) {
    setTimeout(() => {
      context.commit('INCREMENT', value)
    }, 500)
  }
}
// 准备mutations对象——用于修改state中的数据
const mutations = {
  INCREMENT(state, value) {
    console.log('mutations中的INCREMENT被调用了')
    state.sum += value
  },
  DECREMENT(state, value) {
    state.sum -= value
  },
  ADD_PERSON(state, personObj) {
    state.personList.unshift(personObj)
  }
}
// const mutations = (a,b) => {
//   console.log(a,b)
//   // switch(type) {
//   //   case INCREMENT: state.sum += value;return;
//   //   case DECREMENT: state.sum -= value;return;
//   // }
// }

// 准备state对象——用于保存具体的数据
const state = {
  sum: 0, // 当前的和
  personList: [
    {id: '001', name: '张三'}
  ]
}
// 准备getters——用于将state中的数据进行加工
const getters = {
  bigSum(state) {
    return state.sum * 10
  } 
}
// // 创建store
// const store = new Vuex.Store({
//   state,
//   mutations, 
//   actions
// })

// // 导出store
// export default store

// 创建并暴露store
export default new Vuex.Store({
  actions,
  mutations,
  state,
  getters
})
